package com.jyw.business.ast.service;

import java.util.List;
import com.jyw.business.ast.domain.AstConsumable;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jyw.business.ast.domain.AstConsumableRecord;
import com.jyw.business.ast.domain.dto.web.*;
import com.jyw.business.ast.domain.vo.web.AstConsumableDetailVo;
import com.jyw.business.ast.domain.vo.web.AstConsumablePageVo;
import org.springframework.web.multipart.MultipartFile;

/**
 * 资产-耗材信息Service接口
 * 
 * @author system
 * @date 2023-10-24
 */
public interface IAstConsumableService extends IService<AstConsumable>
{
    /**
     * 查询资产-耗材信息
     * 
     * @param id 资产-耗材信息主键
     * @return 资产-耗材信息
     */
    public AstConsumable selectAstConsumableById(Long id);

    /**
     * 查询资产-耗材信息列表
     * 
     * @param astConsumable 资产-耗材信息
     * @return 资产-耗材信息集合
     */
    public List<AstConsumable> selectAstConsumableList(AstConsumable astConsumable);

    /**
     * 新增资产-耗材信息
     * 
     * @param astConsumable 资产-耗材信息
     * @return 结果
     */
    public int insertAstConsumable(AstConsumable astConsumable);

    /**
     * 修改资产-耗材信息
     * 
     * @param astConsumable 资产-耗材信息
     * @return 结果
     */
    public int updateAstConsumable(AstConsumable astConsumable);

    /**
     * 批量删除资产-耗材信息
     * 
     * @param ids 需要删除的资产-耗材信息主键集合
     * @return 结果
     */
    public int deleteAstConsumableByIds(Long[] ids);

    /**
     * 删除资产-耗材信息信息
     * 
     * @param id 资产-耗材信息主键
     * @return 结果
     */
    public int deleteAstConsumableById(Long id);

    /**
     * 耗材管理-分页管理
     * @param dto
     * @return
     */
    List<AstConsumablePageVo> consumablePage(AstConsumablePageDto dto);

    /**
     * 耗材详情
     * @param id
     * @return
     */
    AstConsumableDetailVo consumableDetail(Long id);

    /**
     * 耗材登记
     * @param dto
     */
    void consumableSign(AstConsumableSignDto dto);

    /**
     * 耗材编辑
     * @param dto
     */
    void edit(AstConsumableEditDto dto);

    /**
     * 耗材入库
     * @param dto
     */
    void warehouse(AstConsumableReverseDto dto);

    /**
     * 耗材出库
     * @param dto
     */
    void outOfWarehouse(AstConsumableReverseDto dto);

    /**
     * 冻结库存
     * @param reverseList
     */
    void frostReserve(List<ReserveDto> reverseList);

    /**
     * 解冻库存
     * @param data
     */
    void thawReserve(AstConsumableRecord data);

    /**
     * 申领记录通过
     * @param data
     */
    void claimPass(AstConsumableRecord data);

    /**
     * 导入耗材
     * @param file
     */
    void importData(MultipartFile file);
}
